

/**
 * 员工类
 */
public class Emp {
    // 员工编号
    String number;
    // 员工名
    String name;
    // 员工工资
    double salary;
    // 部门
    String dept;
    // 职位
    String job;
    // 性别
    String gender;
    // 年龄
    int age;

    /**
     * 构造方法、构造函数、构造器都指的是同一个
     * 构造方法是在类中定义的方法，不同于其他的方法，构造方法的定义有如下两点规则：
     *			1）构造方法的名称必须与类名完全相同。
     *			2）构造方法没有返回值，连void关键字有没有
     *  构造方法的语法：
     *      [修饰符] 类名([参数列表]){
     *          方法体
     *      }
     * 构造方法的作用：创建对象，为对象的属性赋值
     * 构造方法什么是执行？
     *      创建对象的时候执行（new 类名()）
     */
    public Emp(){
        // 在构造方法当中为属性赋值（初始化属性）
        name = "大锤";
        System.out.println("无参构造方法");

        // 调用work方法
        work();
    }

    /**
     * 默认的构造方法：
     *    	1）任何一个类都必须含有构造方法。
     *    	2）如果源程序中没有定义构造方法，编译器在编译时会为其添加一个无参的构造方法
     *    	（称为默认无参构造器）。
     *    	3）当定义了构造方法之后，Java编译器不再添加默认的无参构造器。
     */

    /**
     * 带参数的构造方法
     */
    public Emp(String username){
        name = username;
        System.out.println("有参构造方法");
    }


    public void work(){
        System.out.println("员工正在工作1");
    }

    public void work(String name){
        System.out.println("员工正在工作2");
    }

    public void work(double salary){
        // 调用work的无参数方法
        work();
        System.out.println("员工正在工作3");
    }

}
